package com.feonix.common.util.jdbc;

import com.feonix.common.annotation.ColumnType;
import com.feonix.common.basedao.EntityProperty;

public interface Dialect {
	public abstract boolean supportsLimit();

	public abstract String getLimitString(String sql, int offset, int limit);

	public abstract String getDateTimeColumn(EntityProperty entityProperty);

	public abstract String getDateColumn(EntityProperty entityProperty);

	public abstract String getIntColumn(EntityProperty entityProperty);

	public abstract String getDoubleColumn(EntityProperty entityProperty);

	public abstract String getFloatColumn(EntityProperty entityProperty);

	public abstract String getVarcharColumn(EntityProperty entityProperty);

	public abstract String getCharColumn(EntityProperty entityProperty);

	public abstract String getTextColumn(EntityProperty entityProperty);

	public abstract String getBlobColumn(EntityProperty entityProperty);

	public abstract String getGeneratorColumn(EntityProperty entityProperty);

	public abstract String addColumn(String table, String column, ColumnType columnType, String length,
			String defaultVal);

	public abstract String updateColumn(String tableName, String oldColumn, EntityProperty entityProperty);

	public abstract String getCharset();
}
